package main

import "fmt"

func main() {
	// map的声明方式!注意这些数据在map中是无序的，slice是有序的
	// 除了 slice map function 的内建类型都可以作为key
	// struct 不包含以上类型字段也可以作为key
	m := map[string]string{
		"name":    "ccmouse",
		"course":  "golang",
		"site":    "imooc",
		"quality": "notbad",
	}
	m2 := make(map[string]string) // m2 == empty map
	var m3 map[string]string      // m3 == nil
	fmt.Println(m, m2, m3)

	fmt.Println("traversing map")
	// map的遍历
	for k, v := range m {
		fmt.Println(k, v)
	}

	fmt.Println("getting values")
	course := m["name"] // 根据索引获取值
	fmt.Println(course)
	course1 := m["name1"] // 错误的索引获取值为空 不会报错
	fmt.Println(course1)  // 结果直接为 空
	//如何判断某个key在不在
	course2, ok := m["name1"] // 判断索引是否存在
	fmt.Println(course2, ok)  // ok==false
	// 通过if判断索引可以这样写
	if _, ok := m["name1"]; ok {
		fmt.Println("索引name1存在！")
	} else {
		fmt.Println("索引name1不存在！")
	}

	fmt.Println("deleteing values")
	delete(m, "name") //删除m中name的索引数据
}
